class DataStorage1<T> {
  // 传入T类型的数组，如果不传，默认是空数组
  constructor(private _data: T[] = []) {}

  // getters
  public get getData(): T[] {
    return [...this._data];
  }
  // setters

  set data(items: T[]) {
    this._data = items;
  }

  public add(item: T): void {
    this._data.push(item);
  }
}

// class中使用范型，并且使用get 和set
const dataStorage = new DataStorage1<string>();
console.log(dataStorage.getData); // 如果你不使用get，直接是你还需要调用getData()
dataStorage.add("1");
console.log(dataStorage.getData);

// 直接设置因为使用了set
dataStorage.data = ["2", "3"];
console.log(dataStorage.getData);
